Skip to content

docs: split version-agnostic OpenShell lifecycle guidance#1263

Merged
miyoungc merged 16 commits intoNVIDIA:mainfrom
13ernkastel:codex/issue-1261-openshell-compatibility
Apr 7, 2026
Merged

docs: split version-agnostic OpenShell lifecycle guidance#1263
miyoungc merged 16 commits intoNVIDIA:mainfrom
13ernkastel:codex/issue-1261-openshell-compatibility

Conversation

@13ernkastel
Copy link
Copy Markdown
Contributor

@13ernkastel 13ernkastel commented Apr 1, 2026

Summary

This PR now carries only the maintainable, version-agnostic part of the original OpenShell compatibility work for #1261.
It keeps the guidance that nemoclaw onboard is the supported entry point for creating or recreating NemoClaw-managed sandboxes, while removing the hardcoded NemoClaw/OpenShell version-coupling path that miyoungc asked to split out.
The branch has also been refreshed onto current main, so the merge-conflict state is cleared.

Related Issue

Partially addresses #1261

Changes

  • Removed the hardcoded NemoClaw/OpenShell version-pair guidance from README.md, docs/get-started/quickstart.md, and docs/reference/commands.md.
  • Removed the runtime compatibility map and compatibility notice logic from bin/lib/onboard.js.
  • Removed the related version-specific tests from test/onboard.test.js.
  • Kept the version-agnostic lifecycle guidance that nemoclaw onboard is the supported operator entry point for NemoClaw-managed sandboxes.
  • Regenerated the affected .agents/skills output from the corresponding docs/ sources instead of keeping direct generated-file edits.
  • Merged the latest main updates so the PR no longer shows merge conflicts.

Type of Change

  • Code change for a new feature, bug fix, or refactor.
  • Code change with doc updates.
  • Doc only. Prose changes without code sample modifications.
  • Doc only. Includes code sample changes.

Testing

  • npx prek run --all-files passes (or equivalently make check).
  • npm test passes.
  • make docs builds without warnings. (for doc-only changes)
  • Focused validation for the reduced scope:
  • npm run build:cli
  • npx vitest run test/onboard.test.js (78/78 passing)
  • test-cli still hits unrelated existing failures outside this PR scope in src/lib/version.test.ts and test/install-preflight.test.js.

Timeline

  • 2026-04-01: PR opened as docs: clarify OpenShell compatibility guidance, including docs, runtime compatibility mapping, and matching onboarding tests.
  • 2026-04-01: CodeRabbit walkthrough and review raised doc phrasing and lifecycle-guidance consistency issues.
  • 2026-04-01: wscurran linked related issues #1261, #1260, and #1109 in the PR conversation.
  • 2026-04-06: prekshivyas posted a detailed review; the branch was updated to address those items and was approved afterward.
  • 2026-04-06: CodeRabbit noted that autogenerated .agents/skills output should be regenerated from docs/ sources rather than hand-edited.
  • 2026-04-06: miyoungc requested splitting out the hardcoded version-pair work because it would drift quickly and should not ship across docs, code, and tests in that form.
  • 2026-04-07: Commit 9f41f29 reduced the PR to the version-agnostic lifecycle guidance only, and the follow-up comment here summarized that scope change.
  • 2026-04-07: Commit 77fd9fb resolved later merge conflicts and regenerated the affected generated-doc outputs.
  • 2026-04-07: Commit c29b821 merged current main again. GitHub now reports the PR as BLOCKED rather than DIRTY, so the merge-conflict state is cleared and only normal upstream gating remains.

Checklist

General

Code Changes

  • Formatters applied — npx prek run --all-files auto-fixes formatting (or make format for targeted runs).
  • Tests added or updated for new or changed behavior.
  • No secrets, API keys, or credentials committed.
  • Doc pages updated for any user-facing behavior changes (new commands, changed defaults, new features, bug fixes that contradict existing docs).

Doc Changes

  • Follows the style guide. Try running the update-docs agent skill to draft changes while complying with the style guide. For example, prompt your agent with "/update-docs catch up the docs for the new changes I made in this PR."
  • New pages include SPDX license header and frontmatter, if creating a new page.
  • Cross-references and links verified.

Signed-off-by: 13ernkastel LennonCMJ@live.com

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 1, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds documentation and runtime notices documenting NemoClaw 0.1.0’s OpenShell compatibility (pinned to OpenShell 0.0.7). Implements an OpenShell compatibility checker and notice in bin/lib/onboard.js, updates onboarding/help docs to prefer nemoclaw onboard, and adds tests validating notice outputs and formatting.

Changes

Cohort / File(s) Summary
Documentation & Guidance
README.md, docs/get-started/quickstart.md, docs/about/how-it-works.md, docs/reference/commands.md, docs/.../how-it-works.md
Add OpenShell compatibility statement and table mapping NemoClaw 0.1.0 → OpenShell 0.0.7; insert warnings/callouts to prefer nemoclaw onboard and avoid direct openshell update/recreate/sandbox commands.
Onboard CLI Logic
bin/lib/onboard.js
Add semver helpers, frozen NemoClaw→OpenShell baseline mapping, formatting helpers, and exported functions: getSupportedOpenshellVersions, formatSupportedOpenshellVersions, getOpenshellCompatibilityNotice; compute gatewayEnv earlier and emit compatibility notice from startGatewayWithOptions.
Tests
test/onboard.test.js
Extend tests to cover supported-version detection, formatting logic, compatibility notice variants (supported/missing/unsupported), and integration during gateway reuse (stdout/stderr ordering and content).
Agent Skills & Reference Docs
.agents/skills/nemoclaw-deploy-remote/SKILL.md, .agents/skills/nemoclaw-get-started/SKILL.md, .agents/skills/nemoclaw-overview/references/how-it-works.md, .agents/skills/nemoclaw-reference/references/architecture.md, .agents/skills/nemoclaw-reference/references/commands.md, .agents/skills/nemoclaw-reference/references/troubleshooting.md
Adjust remote-deploy guidance to prefer installer + nemoclaw onboard, document NEMOCLAW_DISABLE_DEVICE_AUTH as a build-time toggle, update troubleshooting and onboarding remediation for Docker/OpenShell mismatches, deprecate legacy nemoclaw deploy/setup-spark flows.

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant NemoClawCLI as NemoClaw CLI
  participant OpenShellCLI as OpenShell CLI
  participant Gateway as Gateway/Runtime

  User->>NemoClawCLI: run `nemoclaw onboard`
  NemoClawCLI->>OpenShellCLI: query `openshell --version` (may be absent)
  OpenShellCLI-->>NemoClawCLI: returns version (or no response)
  NemoClawCLI->>NemoClawCLI: compute compatibility notice (getOpenshellCompatibilityNotice)
  NemoClawCLI->>User: print notice (info or warning)
  NemoClawCLI->>Gateway: start / reuse gateway with gatewayEnv.IMAGE_TAG
  Gateway-->>NemoClawCLI: gateway status (health/polling)
  NemoClawCLI->>User: onboarding progress / success
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 I hopped a note where shells may stray,
“Pin 0.0.7” — a carrot on the way.
Onboard hums, the gateway nods,
No surprise in sandbox mods. 🥕

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 21.43% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title 'docs: clarify OpenShell compatibility guidance' directly summarizes the main change across the PR, which focuses on documenting NemoClaw/OpenShell version coupling and clarifying operational boundaries.
Linked Issues check ✅ Passed The PR comprehensively addresses issue #1261 objectives: documents the 0.1.0 ↔ 0.0.7 compatibility baseline (README, quickstart), adds CLI compatibility notices during onboarding, implements version checks with warnings, clarifies CLI boundaries (use nemoclaw onboard instead of openshell commands), and includes regression coverage and behavior tests.
Out of Scope Changes check ✅ Passed All changes are directly scoped to documenting OpenShell compatibility and clarifying operational boundaries. However, multiple files contain updates beyond documentation (onboard.js, test files) that introduce new features like compatibility detection and CLI notices, which are necessary implementations supporting the documentation goals.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (2)
docs/reference/commands.md (1)

69-69: Switch the validation clause to active voice.

Line 69 uses passive voice (“was validated against”); docs style requires active wording.

As per coding guidelines: docs/**: Active voice required. Flag passive constructions.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/reference/commands.md` at line 69, The sentence uses passive voice
("NemoClaw 0.1.0 was validated against"); change it to active voice by rewriting
the clause to something like "than the OpenShell release that NemoClaw 0.1.0
validates against" (locate the sentence containing "NemoClaw 0.1.0 was validated
against" in docs/reference/commands.md and replace that passive clause with an
active construction referencing NemoClaw 0.1.0 validating the release).
docs/get-started/quickstart.md (1)

57-57: Use active, present-tense phrasing for the compatibility baseline.

Line 57 uses passive past tense (“was validated”), which conflicts with the docs style requirements.

As per coding guidelines: docs/**: Active voice required. Flag passive constructions. and docs/**: Present tense. Flag future tense ("will") in descriptions of current behavior.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/get-started/quickstart.md` at line 57, Summary: The compatibility
sentence uses passive past tense; change it to active present-tense. Replace the
current text "NemoClaw 0.1.0 was validated with OpenShell 0.0.7." with an active
present-tense phrasing such as "NemoClaw 0.1.0 works with OpenShell 0.0.7." or
"NemoClaw 0.1.0 validates against OpenShell 0.0.7." Update that single sentence
in the quickstart paragraph to use active voice and present tense to comply with
the docs style rules.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@bin/lib/onboard.js`:
- Around line 2159-2161: The compatibility notice loop using
getOpenshellCompatibilityNotice(gatewayEnv.IMAGE_TAG || null) is never reached
when startGatewayWithOptions returns early on healthy reuse; move or duplicate
the notice emission so it always runs regardless of gateway reuse. Specifically,
call getOpenshellCompatibilityNotice and log each line before invoking
startGatewayWithOptions (or ensure startGatewayWithOptions invokes a
callback/hook that prints the same lines on both new-start and healthy-reuse
paths) so the lifecycle boundary message is always printed.
- Around line 522-528: The getOpenshellCompatibilityNotice function currently
always returns informational text; update it to detect incompatible OpenShell
versions by comparing the passed version (version param) against the supported
NemoClaw↔OpenShell mapping (e.g., a supportedVersions array or mapping constant
you add) using semantic version checks (semver.satisfies or equivalent) and
return a warning message (or an array with a prominent warning line) when the
version does not satisfy the supported range; keep the existing informational
lines when compatible and ensure the function still handles null/unknown version
by returning a neutral notice.

---

Nitpick comments:
In `@docs/get-started/quickstart.md`:
- Line 57: Summary: The compatibility sentence uses passive past tense; change
it to active present-tense. Replace the current text "NemoClaw 0.1.0 was
validated with OpenShell 0.0.7." with an active present-tense phrasing such as
"NemoClaw 0.1.0 works with OpenShell 0.0.7." or "NemoClaw 0.1.0 validates
against OpenShell 0.0.7." Update that single sentence in the quickstart
paragraph to use active voice and present tense to comply with the docs style
rules.

In `@docs/reference/commands.md`:
- Line 69: The sentence uses passive voice ("NemoClaw 0.1.0 was validated
against"); change it to active voice by rewriting the clause to something like
"than the OpenShell release that NemoClaw 0.1.0 validates against" (locate the
sentence containing "NemoClaw 0.1.0 was validated against" in
docs/reference/commands.md and replace that passive clause with an active
construction referencing NemoClaw 0.1.0 validating the release).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: be09412d-9cfa-43b7-bc2c-f24b389173bc

📥 Commits

Reviewing files that changed from the base of the PR and between 97038c0 and c7917a3.

📒 Files selected for processing (6)
  • README.md
  • bin/lib/onboard.js
  • docs/about/how-it-works.md
  • docs/get-started/quickstart.md
  • docs/reference/commands.md
  • test/onboard.test.js

Comment thread bin/lib/onboard.js Outdated
Comment thread bin/lib/onboard.js Outdated
@wscurran wscurran added documentation Improvements or additions to documentation Getting Started Use this label to identify setup, installation, or onboarding issues. OpenShell Support for OpenShell, a safe, private runtime for autonomous AI agents labels Apr 1, 2026
@wscurran
Copy link
Copy Markdown
Contributor

wscurran commented Apr 1, 2026

Copy link
Copy Markdown
Contributor

@prekshivyas prekshivyas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@13ernkastel Thanks for putting this togethe, the OPENSHELL_COMPATIBILITY map, the helper decomposition, and the structural ordering test are all well thought out. This is a solid foundation for addressing #1261.

I've gone through the diff in detail and have a few findings below, grouped by priority.


Must fix

1. npm update -g openshell is missing from the code notices

The docs (README, quickstart, commands.md) list 4 dangerous commands, but the CLI warning and informational notices only list 3npm update -g openshell is missing from the code output. This is arguably the most common accidental upgrade path.

Docs say:

Avoid openshell self-update, npm update -g openshell, openshell gateway start --recreate, or openshell sandbox create

Code says:

Avoid openshell self-update, openshell gateway start --recreate, or openshell sandbox create

Both getOpenshellCompatibilityNotice return paths need npm update -g openshell added.

2. Passive voice still unfixed (CodeRabbit flagged this)

  • quickstart.md: "NemoClaw 0.1.0 was validated with OpenShell 0.0.7"
  • commands.md: "was validated against"

Repo docs style requires active voice. Suggest: "NemoClaw 0.1.0 requires OpenShell 0.0.7" or "NemoClaw 0.1.0 targets OpenShell 0.0.7".

3. No test that NEMOCLAW_VERSION exists in OPENSHELL_COMPATIBILITY

If someone bumps package.json to 0.2.0 without updating the map, getSupportedOpenshellVersions() returns [], formatSupportedOpenshellVersions([]) returns null, and the condition version && supportedLabel && !isSupportedOpenshellVersion(...) is always false. The entire compatibility check silently does nothing. A one-line test would prevent this:

it("tracks the current NemoClaw version in the compatibility map", () => {
  const { version } = require("../../package.json");
  expect(getSupportedOpenshellVersions(version).length).toBeGreaterThan(0);
});

4. .agents/skills/nemoclaw-overview/references/how-it-works.md still has the old guidance

The PR updates docs/about/how-it-works.md but there's a duplicate at .agents/skills/nemoclaw-overview/references/how-it-works.md that still says:

"For users without an existing OpenClaw installation, NemoClaw recommends openshell sandbox create directly rather than forcing a plugin-driven bootstrap."

This directly contradicts the PR's intent. An AI agent referencing this skill file would give users the old, dangerous advice.


Should fix

5. Mismatch warning goes to console.log (stdout) instead of console.warn (stderr)

The compatibility warning is printed via console.log. For CI/CD pipelines and scripts that parse stdout, this mixes warnings into normal output. The mismatch path should use console.warn or console.error so it goes to stderr. The informational (happy-path) notice is fine on stdout.

6. Informational notice is noisy on the happy path

When versions match, users see 2 lines of "everything is fine but here's a reminder" output on every onboard:

  OpenShell compatibility: NemoClaw derives the gateway image from the installed openshell CLI (0.0.7).
  Use `nemoclaw onboard` to recreate NemoClaw-managed sandboxes, and avoid ...

Consider making the happy path silent (or a single short line like ✓ OpenShell 0.0.7 (compatible)) and only being verbose when there's a problem.

7. Null version notice should be more explicit

When openshell -V fails, the notice says "NemoClaw derives the gateway image from the installed openshell CLI" — a calm informational message. A missing/broken OpenShell during onboard is itself a problem. Consider: "Could not detect installed OpenShell version — verify openshell -V works before proceeding."


Minor / follow-up

8. formatSupportedOpenshellVersions grammar for 2-item lists

For ["0.0.7", "0.0.8"] it returns "0.0.7, or 0.0.8" — the comma before "or" is incorrect with only 2 items. Should be "0.0.7 or 0.0.8". Oxford comma applies for 3+ items only.

9. Structural source-code test is fragile

The test that regex-matches startGatewayWithOptions function body and uses indexOf to verify ordering is clever but brittle. A rename or refactor breaks the test without breaking the feature. Consider an integration-style test that captures console output instead.

10. Pre-release versions in package.json silently disable the check

If package.json ever has "0.2.0-beta.1", the map lookup returns undefined and the check silently disables (same root cause as #3 but via a different trigger).


Overall this is heading in the right direction. Thanks again for the thorough work here.

@prekshivyas prekshivyas self-assigned this Apr 6, 2026
@13ernkastel
Copy link
Copy Markdown
Contributor Author

@prekshivyas thanks for the detailed review. I pushed a follow-up that merges the latest main into this branch to clear the PR conflicts and addresses the feedback you called out:

  • added npm update -g openshell to the CLI compatibility notices so the code output matches the docs
  • switched the compatibility wording to active voice in the docs (supports OpenShell 0.0.7) and regenerated the affected skill references so the .agents/skills copies stay in sync
  • added regression coverage that the current NemoClaw version is represented in OPENSHELL_COMPATIBILITY, plus prerelease/base-semver normalization and the 2-item grammar fix in formatSupportedOpenshellVersions
  • routed compatibility warnings to stderr, made the supported-path notice a single concise line, and made the unknown-version path an explicit warning
  • replaced the brittle source-text ordering assertion with a behavior test that exercises healthy gateway reuse through a mock openshell binary

I also updated the generated nemoclaw-overview reference so it no longer suggests openshell sandbox create as the recommended lifecycle entry point.

Validation I ran locally in the updated branch:

  • npm run build:cli
  • npx eslint bin/lib/onboard.js test/onboard.test.js
  • npx vitest run test/onboard.test.js

Thanks again for the thorough feedback.

Signed-off-by: 13ernkastel <LennonCMJ@live.com>
Copy link
Copy Markdown
Contributor

@prekshivyas prekshivyas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @13ernkastel — all 10 items from the previous review are addressed. Nice work on the turnaround.

Quick summary of what was fixed in d55083c7:

  • npm update -g openshell consistency — extracted OPENSHELL_DIRECT_COMMANDS constant so docs and code list the same 4 commands everywhere
  • Passive voice — "was validated with" → "supports" across README, quickstart, and commands.md
  • Version map guard test — test reads package.json and asserts the current version exists in OPENSHELL_COMPATIBILITY, so a version bump without updating the map fails CI
  • Stale .agents/skills/ copy — updated to match the new "OpenShell-backed lifecycle" guidance (plus several other skill files updated for consistency)
  • Warning to stderrgetOpenshellCompatibilityLevel() routes mismatches through console.warn, happy path stays on console.log
  • Happy path noise — collapsed to a single line when versions match
  • Null version handling — now explicitly warns "Could not detect the installed openshell CLI version"
  • 2-item grammar"0.0.7 or 0.0.8" (no errant comma), with tests for 1, 2, and 3-item lists
  • Fragile structural test replaced — integration test spawns a real child process with a mock openshell binary, verifies output ordering at runtime
  • Pre-release version supportparseSemver accepts [-+] suffixes, getSupportedOpenshellVersions normalizes before map lookup, test confirms "0.1.0-beta.1" resolves correctly

The missing-map-entry case now also emits an explicit warning ("does not declare a supported OpenShell baseline") instead of silently disabling the check — good defensive addition.

Only remaining item is --strict enforcement for CI, which we agreed is a follow-up. LGTM.

@cv cv requested a review from miyoungc April 6, 2026 16:29
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
.agents/skills/nemoclaw-reference/references/commands.md (1)

1-249: ⚠️ Potential issue | 🔴 Critical

Do not edit autogenerated skill files directly.

This file is autogenerated by scripts/docs-to-skills.py and should not be edited directly.
The corresponding source file docs/reference/commands.md is included in this PR.
After updating the source file, regenerate the skills using python scripts/docs-to-skills.py.

As per coding guidelines: "Files in .agents/skills/nemoclaw-/.md are autogenerated by scripts/docs-to-skills.py and must never be edited directly" and "Edit documentation under docs/ directory (never .agents/skills/nemoclaw-*/*.md) and regenerate skills with python scripts/docs-to-skills.py".

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.agents/skills/nemoclaw-reference/references/commands.md around lines 1 -
249, The PR edited an autogenerated skill file
(.agents/skills/nemoclaw-reference/references/commands.md) which must not be
modified directly; revert any changes to that file and instead update the
canonical source docs/reference/commands.md, then run the generation script
scripts/docs-to-skills.py (e.g., python scripts/docs-to-skills.py) to regenerate
.agents/skills/nemoclaw-reference/references/commands.md so the change flows
through the proper build step.
.agents/skills/nemoclaw-deploy-remote/SKILL.md (1)

1-188: ⚠️ Potential issue | 🔴 Critical

Do not edit autogenerated skill files directly.

This file is autogenerated by scripts/docs-to-skills.py and should not be edited directly.
Make changes to the corresponding source file under docs/ and regenerate the skills using python scripts/docs-to-skills.py.

As per coding guidelines: "Files in .agents/skills/nemoclaw-/.md are autogenerated by scripts/docs-to-skills.py and must never be edited directly" and "Edit documentation under docs/ directory (never .agents/skills/nemoclaw-*/*.md) and regenerate skills with python scripts/docs-to-skills.py".

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.agents/skills/nemoclaw-deploy-remote/SKILL.md around lines 1 - 188, The PR
edited an autogenerated skill file
(.agents/skills/nemoclaw-deploy-remote/SKILL.md) which must not be changed
directly; revert your edits to that file, make the documentation changes in the
corresponding source under docs/ (the original markdown that feeds this skill),
and regenerate the skill by running the generator script
scripts/docs-to-skills.py (e.g., python scripts/docs-to-skills.py) so the
updated content is produced into .agents/skills/nemoclaw-deploy-remote/SKILL.md.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.agents/skills/nemoclaw-reference/references/troubleshooting.md:
- Around line 98-109: This .agents/skills file is autogenerated and must not be
edited directly; instead update the original source docs file
docs/reference/troubleshooting.md with the desired content (e.g., the
Docker/Podman onboarding notes) and then regenerate the skill by running the
generator script scripts/docs-to-skills.py so it updates
.agents/skills/nemoclaw-reference/references/troubleshooting.md; do not commit
direct edits to the autogenerated file.

---

Outside diff comments:
In @.agents/skills/nemoclaw-deploy-remote/SKILL.md:
- Around line 1-188: The PR edited an autogenerated skill file
(.agents/skills/nemoclaw-deploy-remote/SKILL.md) which must not be changed
directly; revert your edits to that file, make the documentation changes in the
corresponding source under docs/ (the original markdown that feeds this skill),
and regenerate the skill by running the generator script
scripts/docs-to-skills.py (e.g., python scripts/docs-to-skills.py) so the
updated content is produced into .agents/skills/nemoclaw-deploy-remote/SKILL.md.

In @.agents/skills/nemoclaw-reference/references/commands.md:
- Around line 1-249: The PR edited an autogenerated skill file
(.agents/skills/nemoclaw-reference/references/commands.md) which must not be
modified directly; revert any changes to that file and instead update the
canonical source docs/reference/commands.md, then run the generation script
scripts/docs-to-skills.py (e.g., python scripts/docs-to-skills.py) to regenerate
.agents/skills/nemoclaw-reference/references/commands.md so the change flows
through the proper build step.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 17663b32-2b99-4714-8a2e-d06ddf690035

📥 Commits

Reviewing files that changed from the base of the PR and between 965277c and c7b367d.

📒 Files selected for processing (11)
  • .agents/skills/nemoclaw-deploy-remote/SKILL.md
  • .agents/skills/nemoclaw-get-started/SKILL.md
  • .agents/skills/nemoclaw-overview/references/how-it-works.md
  • .agents/skills/nemoclaw-reference/references/architecture.md
  • .agents/skills/nemoclaw-reference/references/commands.md
  • .agents/skills/nemoclaw-reference/references/troubleshooting.md
  • README.md
  • bin/lib/onboard.js
  • docs/get-started/quickstart.md
  • docs/reference/commands.md
  • test/onboard.test.js
✅ Files skipped from review due to trivial changes (5)
  • .agents/skills/nemoclaw-overview/references/how-it-works.md
  • .agents/skills/nemoclaw-get-started/SKILL.md
  • docs/get-started/quickstart.md
  • README.md
  • .agents/skills/nemoclaw-reference/references/architecture.md
🚧 Files skipped from review as they are similar to previous changes (2)
  • bin/lib/onboard.js
  • test/onboard.test.js

Comment thread .agents/skills/nemoclaw-reference/references/troubleshooting.md
@miyoungc
Copy link
Copy Markdown
Contributor

miyoungc commented Apr 6, 2026

Thanks @13ernkastel for tackling this — the confusion around OpenShell version coupling is a real problem and the intent here is solid. The compatibility map concept, the notice decomposition, and the test coverage are all well thought out.

However, we can't merge this as-is because of a version accuracy and maintenance concern that runs through the entire PR.

The version numbers are wrong and will go stale

The PR hardcodes NemoClaw 0.1.0 throughout, but the project is currently at v0.0.6 (see git tag --sort=-v:refname) and advances by 0.0.1 most business days. package.json on main also shows 0.1.0, which is itself a bug — it doesn't match any released tag.

The hardcoded 0.1.0 / 0.0.7 pairs appear in 6+ locations across docs and code:

File Hardcoded values
README.md NemoClaw 0.1.0 supports OpenShell 0.0.7 + version table
docs/get-started/quickstart.md Same prose + version table
docs/reference/commands.md NemoClaw 0.1.0 supports
bin/lib/onboard.js OPENSHELL_COMPATIBILITY map with "0.1.0": ["0.0.7"]
test/onboard.test.js Assertions against 0.1.0 / 0.0.7 strings
.agents/skills/nemoclaw-reference/references/commands.md NemoClaw 0.1.0 supports

These will be wrong the day after they merge. With daily version bumps, maintaining hardcoded version strings across this many files isn't sustainable.

What next

We are internally evaluating the best way to make version coupling discoverable and maintainable without hardcoding — something that stays accurate as releases advance. We'll follow up with a proposed approach on #1261.

In the meantime, the non-version-specific parts of this PR (preferring nemoclaw onboard over direct openshell commands, the lifecycle guidance in how-it-works.md, the NEMOCLAW_DISABLE_DEVICE_AUTH documentation) are good contributions. Would you be open to splitting those out into a separate PR so we can land that guidance without the version-pinning bits?

@13ernkastel 13ernkastel changed the title docs: clarify OpenShell compatibility guidance docs: split version-agnostic OpenShell lifecycle guidance Apr 7, 2026
@13ernkastel
Copy link
Copy Markdown
Contributor Author

@miyoungc thanks for the review. I updated this PR to follow the split you proposed.

What changed in this update:

  • removed the hardcoded NemoClaw/OpenShell version-pair guidance from the docs
  • removed the runtime compatibility map / onboarding compatibility notice from bin/lib/onboard.js
  • removed the related version-specific tests from test/onboard.test.js
  • kept the version-agnostic guidance that nemoclaw onboard is the supported entry point for creating or recreating NemoClaw-managed sandboxes
  • kept the lifecycle guidance warning against running direct OpenShell recreate/update flows for NemoClaw-managed environments unless the operator intends to manage OpenShell separately and then rerun nemoclaw onboard

Current PR summary:

  • clarify the operator-facing lifecycle guidance around nemoclaw onboard
  • keep the durable docs changes that do not depend on hardcoded fast-moving NemoClaw/OpenShell version pairs
  • leave version-coupling design and any maintainable compatibility mapping for follow-up work on #1261

I also updated the PR title/body to match the reduced scope so it now reflects this as a partial step on #1261 rather than a full version-baseline change.

Testing run for this update:

  • npx vitest run test/onboard.test.js

If you want, I can also split the remaining non-version-specific pieces into an even narrower docs-only PR, but this branch should now align with the version-agnostic scope you outlined.

# Conflicts:
#	.agents/skills/nemoclaw-deploy-remote/SKILL.md
#	.agents/skills/nemoclaw-reference/references/commands.md
@miyoungc
Copy link
Copy Markdown
Contributor

miyoungc commented Apr 7, 2026

Thank you for incorporating the feedback! Approving and merging.

@miyoungc miyoungc merged commit b359486 into NVIDIA:main Apr 7, 2026
11 checks passed
gemini2026 pushed a commit to gemini2026/NemoClaw that referenced this pull request Apr 14, 2026
## Summary
This PR now carries only the maintainable, version-agnostic part of the
original OpenShell compatibility work for `NVIDIA#1261`.
It keeps the guidance that `nemoclaw onboard` is the supported entry
point for creating or recreating NemoClaw-managed sandboxes, while
removing the hardcoded NemoClaw/OpenShell version-coupling path that
[miyoungc asked to split
out](NVIDIA#1263 (comment)).
The branch has also been refreshed onto current `main`, so the
merge-conflict state is cleared.

## Related Issue
Partially addresses NVIDIA#1261

## Changes
- Removed the hardcoded NemoClaw/OpenShell version-pair guidance from
`README.md`, `docs/get-started/quickstart.md`, and
`docs/reference/commands.md`.
- Removed the runtime compatibility map and compatibility notice logic
from `bin/lib/onboard.js`.
- Removed the related version-specific tests from
`test/onboard.test.js`.
- Kept the version-agnostic lifecycle guidance that `nemoclaw onboard`
is the supported operator entry point for NemoClaw-managed sandboxes.
- Regenerated the affected `.agents/skills` output from the
corresponding `docs/` sources instead of keeping direct generated-file
edits.
- Merged the latest `main` updates so the PR no longer shows merge
conflicts.

## Type of Change
- [ ] Code change for a new feature, bug fix, or refactor.
- [x] Code change with doc updates.
- [ ] Doc only. Prose changes without code sample modifications.
- [ ] Doc only. Includes code sample changes.

## Testing
- [ ] `npx prek run --all-files` passes (or equivalently `make check`).
- [ ] `npm test` passes.
- [ ] `make docs` builds without warnings. (for doc-only changes)
- Focused validation for the reduced scope:
- `npm run build:cli`
- `npx vitest run test/onboard.test.js` (`78/78` passing)
- `test-cli` still hits unrelated existing failures outside this PR
scope in `src/lib/version.test.ts` and `test/install-preflight.test.js`.

## Timeline
- `2026-04-01`: PR opened as `docs: clarify OpenShell compatibility
guidance`, including docs, runtime compatibility mapping, and matching
onboarding tests.
- `2026-04-01`: CodeRabbit walkthrough and review raised doc phrasing
and lifecycle-guidance consistency issues.
- `2026-04-01`: `wscurran` linked related issues `NVIDIA#1261`, `NVIDIA#1260`, and
`NVIDIA#1109` in the PR conversation.
- `2026-04-06`: [`prekshivyas` posted a detailed
review](NVIDIA#1263 (review));
the branch was updated to address those items and was [approved
afterward](NVIDIA#1263 (review)).
- `2026-04-06`: [CodeRabbit
noted](NVIDIA#1263 (review))
that autogenerated `.agents/skills` output should be regenerated from
`docs/` sources rather than hand-edited.
- `2026-04-06`: [miyoungc requested splitting
out](NVIDIA#1263 (comment))
the hardcoded version-pair work because it would drift quickly and
should not ship across docs, code, and tests in that form.
- `2026-04-07`: Commit `9f41f29` reduced the PR to the version-agnostic
lifecycle guidance only, and the follow-up comment
[here](NVIDIA#1263 (comment))
summarized that scope change.
- `2026-04-07`: Commit `77fd9fb` resolved later merge conflicts and
regenerated the affected generated-doc outputs.
- `2026-04-07`: Commit `c29b821` merged current `main` again. GitHub now
reports the PR as `BLOCKED` rather than `DIRTY`, so the merge-conflict
state is cleared and only normal upstream gating remains.

## Checklist

### General

- [ ] I have read and followed the [contributing
guide](https://github.com/NVIDIA/NemoClaw/blob/main/CONTRIBUTING.md).
- [ ] I have read and followed the [style
guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md).
(for doc-only changes)

### Code Changes

- [ ] Formatters applied — `npx prek run --all-files` auto-fixes
formatting (or `make format` for targeted runs).
- [x] Tests added or updated for new or changed behavior.
- [x] No secrets, API keys, or credentials committed.
- [x] Doc pages updated for any user-facing behavior changes (new
commands, changed defaults, new features, bug fixes that contradict
existing docs).

### Doc Changes

- [ ] Follows the [style
guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md).
Try running the `update-docs` agent skill to draft changes while
complying with the style guide. For example, prompt your agent with
"`/update-docs` catch up the docs for the new changes I made in this
PR."
- [ ] New pages include SPDX license header and frontmatter, if creating
a new page.
- [x] Cross-references and links verified.

---
Signed-off-by: 13ernkastel <LennonCMJ@live.com>

---------

Signed-off-by: 13ernkastel <LennonCMJ@live.com>
Co-authored-by: Prekshi Vyas <34834085+prekshivyas@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation Getting Started Use this label to identify setup, installation, or onboarding issues. OpenShell Support for OpenShell, a safe, private runtime for autonomous AI agents

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants